package com.insta.formation.library.dao;

/**
 * DAO générique pour tous les autres DAO de l'application. Cette interface
 * fournit les 4 méthodes de base des DAO
 * 
 * @author julien
 * 
 * @param <T>
 */
public interface IDao<T>
{
	/**
	 * Creation d'un objet dans la base de données
	 * 
	 * @param o
	 *            objet à créer dans la base de données
	 * @return objet crée dans la base de données, NULL si probleme
	 */
	public T create(T o);

	/**
	 * Récupération d'un objet à partir de son identifiant dans la base de
	 * données
	 * 
	 * @param id
	 *            identifiant de l'objet
	 * @return objet retourné, NULL si probleme
	 */
	public T find(int id);

	/**
	 * Mise à jour d'un objet dans la base de données
	 * 
	 * @param o
	 *            objet à mettre à jour dans la base de données
	 * @return objet mise à joru dans la base de données, NULL si probleme
	 */
	public T update(T o);

	/**
	 * Supprime un objet de la base de données
	 * 
	 * @param o
	 *            objet à supprime de la base
	 */
	public void delete(T o);
}
